﻿using SD.Infrastructure.DTOBase;
using SlamDunk.MES.IAppService.DTOs.Outputs.FoundationContext;
using SlamDunk.MES.IAppService.DTOs.Outputs.ResourceContext;
using SlamDunk.ValueObjects.Enums;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace SlamDunk.MES.IAppService.DTOs.Outputs.StockContext
{
    /// <summary>
    /// 出/入库记录数据传输对象
    /// </summary>
    [DataContract]
    public class BoundRecordInfo : BaseDTO
    {
        #region 物料定义Id —— Guid MaterialId
        /// <summary>
        /// 物料定义Id
        /// </summary>
        [DataMember]
        public Guid MaterialId { get; set; }
        #endregion

        #region 物料批次Id —— Guid? MaterialLotId
        /// <summary>
        /// 物料批次Id
        /// </summary>
        [DataMember]
        public Guid? MaterialLotId { get; set; }
        #endregion

        #region 出/入库方向类型 —— StockDirectionType DirectionType
        /// <summary>
        /// 出/入库方向类型
        /// </summary>
        [DataMember]
        public StockDirectionType DirectionType { get; set; }
        #endregion

        #region 储存位置类型 —— StorageLocationType StorageLocationType
        /// <summary>
        /// 储存位置类型
        /// </summary>
        [DataMember]
        public StorageLocationType StorageLocationType { get; set; }
        #endregion

        #region 储存位置Id —— string StorageLocationId
        /// <summary>
        /// 储存位置Id
        /// </summary>
        [DataMember]
        public string StorageLocationId { get; set; }
        #endregion

        #region 储存位置名称 —— string StorageLocationName
        /// <summary>
        /// 储存位置名称
        /// </summary>
        [DataMember]
        public string StorageLocationName { get; set; }
        #endregion

        #region 库存单据类Id —— Guid StockOrderClassId
        /// <summary>
        /// 库存单据类Id
        /// </summary>
        [DataMember]
        public Guid StockOrderClassId { get; set; }
        #endregion

        #region 库存单据Id —— Guid StockOrderId
        /// <summary>
        /// 库存单据Id
        /// </summary>
        [DataMember]
        public Guid StockOrderId { get; set; }
        #endregion

        #region 库存单据编号 —— string StockOrderNo
        /// <summary>
        /// 库存单据编号
        /// </summary>
        [DataMember]
        public string StockOrderNo { get; set; }
        #endregion

        #region 数量 —— decimal Quantity
        /// <summary>
        /// 数量
        /// </summary>
        [DataMember]
        public decimal Quantity { get; set; }
        #endregion

        #region 工厂模型Id —— Guid? FacilityId
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DataMember]
        public Guid? FacilityId { get; set; }
        #endregion

        #region 出/入库记录条码编号集 —— IEnumerable<string> RelatedBarcodeNos
        /// <summary>
        /// 出/入库记录条码编号集
        /// </summary>
        [DataMember]
        public IEnumerable<string> RelatedBarcodeNos { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - 物料定义 —— MaterialInfo MaterialInfo
        /// <summary>
        /// 导航属性 - 物料定义
        /// </summary>
        [DataMember]
        public MaterialInfo MaterialInfo { get; set; }
        #endregion

        #region 导航属性 - 物料批次 —— MaterialLotInfo MaterialLotInfo
        /// <summary>
        /// 导航属性 - 物料批次
        /// </summary>
        [DataMember]
        public MaterialLotInfo MaterialLotInfo { get; set; }
        #endregion

        #region 导航属性 - 工厂模型 —— FacilityInfo FacilityInfo
        /// <summary>
        /// 导航属性 - 工厂模型
        /// </summary>
        [DataMember]
        public FacilityInfo FacilityInfo { get; set; }
        #endregion
    }
}
